package dryven.config;

import java.io.File;

import dryven.init.FrontControllerFactory;

public interface ApplicationConfiguration extends DatabaseConfigurationSource {
	
	public enum DebugEnvironment {
		Development,
		Testing,
		PreProduction,
		Production
	}
	
	public Iterable<DatabaseConfiguration> getDatabaseConfigurations();
	public String getApplicationRootURLPath();
	public String getServerName();
	public String getApplicationRootPath();
	public DebugEnvironment getDebugEnvironment();
	public MailSenderConfiguration getMailSenderConfiguration();
	public Iterable<String> getModelPackages();
	public Iterable<String> getControllerPackages();
	public Iterable<String> getViewPackages();
	public Class<? extends FrontControllerFactory> getFrontControllerFactoryClass();
	public String getCustomConfigValue(String ... keys);
	public String getSignSecret();
	public File getUserDataDirectory();
	public Iterable<String> getClassPathEntries();
}
